package com.syni.mdd.sjb.common.component.mybatis.community.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 企业微信-外部联系人-企业员工,n:n关系表
 *
 * @author wangbaitao
 * @Date 2021-02-22
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SjbQywxExternalUserRef implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键Id
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;
    /**
     * 企业员工id
     */
    private String userid;
    /**
     * 外部员工Id
     */
    private String externalUserid;
    /**
     * 同步时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime syncTime;
    /**
     * 备注
     */
    private String remark;
    /**
     * 描述
     */
    private String description;
    /**
     * 添加时间
     */
    private LocalDateTime createtime;
    /**
     * 标签的分组名称
     */
    private String groupName;
    /**
     * 标签名称
     */
    private String tagName;
    /**
     * 标签类型, 1-企业设置, 2-用户自定义
     */
    private String type;
    /**
     * 该成员添加此外部联系人所打企业标签的id，仅企业设置（type为1）的标签返回
     */
    private String tagId;
    /**
     * 备注的企业名称
     */
    private String remarkCorpName;
    /**
     * 该成员对此客户备注的手机号码，第三方不可获取
     */
    private String remarkMobiles;
    /**
     * 添加此客户的来源:0-未知来源,1-扫描二维码,2-搜索手机号,3-名片分享,4-群聊,5-手机通讯录,
     * 6-微信联系人,7-来自微信的添加好友申请,8-安装第三方应用时自动添加的客服人员,9-搜索邮箱,
     * 201-内部成员共享,202-管理员/负责人分配
     */
    private String addWay;
    /**
     * 发起添加的userid，如果成员主动添加，为成员的userid；如果是客户主动添加，则为客户的外部联系人userid；
     * 如果是内部成员共享/管理员分配，则为对应的成员/管理员userid
     */
    private String operUserid;
    /**
     * 企业自定义的state参数，用于区分客户具体是通过哪个「联系我」添加，由
     */
    private String state;
    /**
     * 企业id
     */
    private String corpid;
    /**
     * 企业成员自定义的标签信息，JSON格式的数据
     */
    private String userTagName;
    /**
     * 标签名称集合
     */
    @TableField(exist = false)
    private List<String> tagNames;
    /**
     * 角色
     */
    @TableField(exist = false)
    private String role;
    /**
     * 个人标签集合
     */
    @TableField(exist = false)
    private List<String> userTagNames;
    /**
     * 头像路径
     */
    @TableField(exist = false)
    private String avatar;

    public static final String ID = "id";
    public static final String USER_ID = "userid";
    public static final String EXTERNAL_USER_ID = "external_userid";
    public static final String SYNC_TIME = "sync_time";
    public static final String REMARK = "remark";
    public static final String DESCRIPTION = "description";
    public static final String CREATETIME = "createtime";
    public static final String GROUP_NAME = "group_name";
    public static final String TAG_NAME = "tag_name";
    public static final String TYPE = "type";
    public static final String TAG_ID = "tag_id";
    public static final String REMARK_CROP_NAME = "remark_corp_name";
    public static final String REMARK_MODILES = "remark_mobiles";
    public static final String ADD_WAY = "add_way";
    public static final String OPEN_USER_ID = "oper_userid";
    public static final String STATE = "state";
    public static final String CORPID = "corpid";
}